Fork me on GitHub

理解 HTTP 专业术语

  • 客户端 user-agent 是什么?
    user-agent 就是任何能够为用户发起行为的工具。这个角色通常都是由浏览器来扮演。一些例外情况,比如是开发者使用的程序,以及 Web 开发者调试应用程序。

  • http 是什么?
    超文本传输​​协议(HTTP),它通常被用于Web浏览器和Web服务器之间的通信

  • 服务器资源是什么?
    网络上的一切内容都是资源,无论是静态的文件,还是动态生成的文件

  • 媒体类型是什么?
    就是一种数据类型的标记,用来表示传输的数据是什么类型的,好让接收端知道,接收到的是什么类型的数据,这样接收端好处理该数据。
    常见的标记方式是[MIME][0_0],MIME 描述了文件的主要类型以及特定子类型,如Content-Type: text/htmltext 描述文件的主要类型是文本,而子类型是 html 文档。
    浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确的MIME类型附加到响应对象的头部是非常重要的。

  • URI 是什么?
    首先URI从其概念来说是统一资源标识符,它的作用就是在网络上唯一确定一个资源,就好比,在中国,身份证能唯一确定一个人一样!知道身份证号,就一定能确定一个人姓甚名谁一样!它有两个子集:URL(统一资源定位符)和URN(统一资源名),首先不特别声明,我们所说的URI就是指URLURL是跟资源其在网络上的位置有关!而URN是指资源跟其名字有关。

  • 请求方法指什么?
    客户端向服务器发起请求的方式。常见的方法有:get、post、delete、put

  • 状态码是什么??
    HTTP响应状态码指示HTTP请求是否已成功完成。响应分为五类:信息响应,成功响应,重定向,客户端错误和服务器错误。

  • 报文是什么?
    HTTP报文分为:请求报文、响应报文。两种报文都具有类似的结构,分别由三个部分构成:起始行、首部、主体,起始行描述报文干了什么。首部描述报文传输的具体细节。主体描述传输的实际内容。

  • URL 输入到页面显示,经历了什么过程?

    • 浏览器地址栏输入时联想提示

    • URL 解析,URL 为了在不同协议不同传输机制都可以安全的运送信息,采用的字符都是符合 ASCII 集的。若有非 ASCII 的字符(中文等),就会先通过转义处理。

    • DNS (Domain Name System) 解析

      • 为什么要 DNS 解析
        因为 http 是基于 tcp 连接的,而 tcp 则是通过 ip 地址去识别的。DNS 解析就是域名转化成 ip 地址的过程
      • 浏览器 DNS 解析优先级
        查看浏览器内部缓存 —> 系统缓存(host 文件) —> 路由器缓存、ISP 缓存 —> 本地 DNS 服务器(可无) —> DNS 服务器 —> 找不到服务器地址
    • 浏览器建立一条与web服务器的 TCP 连接(TCP 三次握手)

    • 浏览器向服务器发送一条 http 请求报文

    • 服务器向浏览器回送一条 http 响应报文

    • 浏览器解析渲染文档

    • 关闭连(TCP 四次握手)

二、HTTP 报文

HTTP/1.1 以及更早的 HTTP 协议报文都是语义可读的。在 HTTP/2 中,这些报文被嵌入到了一个新的二进制结构,帧。报文分请求报文、响应报文。都由三个部分组成,起始行、首部、主体。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 请求报文

<method> <request-URL> <protocol/version>
<headers>

<entity-body>

注:
<method> 请求方法
<request-URL> 请求 URL
<protocol/version> http 协议版本号
<headers> 请求头(首部)
<entity-body> 请求参数
1
2
3
4
5
6
7
8
9
10
11
12
13
# 响应报文

<protocol/version> <status> <reason-phrase>
<headers>

<entity-body>

注:
<protocol/version> http 协议版本号
<status> 状态码
<reason-phrase> 状态信息(这个信息是非权威的状态码描述信息,可以由服务端自行设定)
<headers> 响应头(首部)
<entity-body> 响应数据

参考文章

-------------我是有底线哒-------------